package com.sinosoft.sinopay.paytrade.facade;

import java.util.List;
import java.util.Map;

import com.sinosoft.sinocloud.platform.common.web.pagequery.PageGrid;
import com.sinosoft.sinocloud.platform.common.web.pagequery.PageQueryModel;
import com.sinosoft.sinopay.api.common.dto.pay.PaymentInfoDetailDTO;
import com.sinosoft.sinopay.api.common.dto.query.PayInfoQryParam;
import com.sinosoft.sinopay.paytrade.dto.*;

/**
 * 【支付交易查询微服务接口类】
 * 
 * @author dengcanyang
 * @date 2016年12月17日 下午10:47:26 
 * @version V1.0
 */
public interface PaymentTradeQueryFacadeService {
	/**
	 * 通过查询参数信息查询支付明细信息
	 * @param queryParam查询参数类。包含：payNo，merchantCode，payType，payDate
	 * @return List<PaymentInfoDetailDTO> 支付明细信息集合
	 */
	List<PaymentInfoDetailDTO> queryPaymentDetailsByParam(PayInfoQryParam queryParam);

	/**
	 * 方法的功能描述：根据订单号查询订单信息
	 * @param payNo 订单号码
	 * @return PaymentRequestDTO 支付明细信息
	 */
	public PaymentInfoDetailDTO queryPaymentOrderByPayNo(String payNo);
	
	/**  
	* 根据订单批次号 查询所有交易订单Sid集合
	* @param reqBatchNo 订单批次号
	* @return List<Map<String, Object>> 包含批量操作四部分 sid list集合信息
	*/
	List<Map<String, Object>> queryTranseOrderSidList(String reqBatchNo);
	
	/**  
	*  查询 支付交易回调信息列表
	* @param cPayTradeNotifyRecord 查询参数：商户编码、支付号码、回调地址、回调类型、回调次数、回调限制次数、回调结果
	*/
	List<PayTradeNotifyRecordDTO> queryPayTradeNotifyRecord(PayTradeNotifyRecordDTO cPayTradeNotifyRecord);
	
	/**  
	*  查询当日所有支付交易信息表数据
	* @param thirdpayCode 渠道编码
	* return List<PaymentTradeReqDTO>
	*/
	List<PaymentInfoDetailDTO> queryAllPayTransInfoForDay(String thirdpayCode);
	 
	/**  
	*  查询当日所有支付订单批次表数据
	* @param thirdpayCode 渠道编码
	* return List<PaymentTradeReqDTO>
	*/
	List<PaymentTradeReqDTO> queryAllPayOrderBatchesOfDay(String thirdpayCode);
	
	/**  
	*  查询支付交易表信息
	* @param Sid 流水号
	* return PaymentTradeReqDTO
	*/
	PaymentTradeReqDTO queryPayTransInfoBySid(Integer Sid);
	
	/**   
	*  查询批次订单表信息
	* @param Sid 流水号
	* return PaymentTradeReqDTO
	*/
	PaymentTradeReqDTO queryBatchOrderInfoBySid(Integer Sid);
	
	/**  
	* 查询交易支付关系表信息
	* @param payBatchId 支付批次ID
	* return PaymentTradeReqDTO
	*/
	PaymentTradeReqDTO queryTransPayRelateInfoByBatchId(Integer payBatchId);
	
	/**  
	* 查询支付总表信息
	* @param payBatchNo  支付批次号
	* return PaymentTradeBatchDTO
	*/ 
	PaymentTradeBatchDTO queryPaySumInfoByBatchNo(String payBatchNo);
	
	/**  
    * 银行转码 信息
    * @param payBatchNo  订单表 银行编码吗
    * return String  目标银行编码
    */ 
	String queryStandBankCodeByBankCode(String bankCode);
	
	/**     
    * 根据报盘银行编码查询报盘文件名称 ，条件为报盘文件状态=1
    * @param payChannelId  报盘银行编码 
    * return String  报盘文件名称
    */ 
    String queryOfferFileNameByOfferPayChannelId(Integer payChannelId);
    
    /**     
     * 根据批次号 查询 支付交易订单 对应sid
     * @param reqBatchNo  请求批次号
     * return Integer  支付交易订单批次sid
     */ 
     Integer queryPayTradeBatchSidByBatchNo(String reqBatchNo);
     
     /**     
      * 通联交易结果查询
      * @param tAllinpayReqDTO  条件信息
      * return List<AllinpayRespDTO>  查询结果集
      */ 
      AllinpayRespDTO queryAllinpayTradeResult(AllinpayReqDTO tAllinpayReqDTO);
      
      /**     
       * 综合查询模块：分页查询交易信息
       * @param cPageQueryModel  参数信息
       * return PageGrid  分页查询结果信息
       */ 
      PageGrid queryPaymentTradePageList(PageQueryModel cPageQueryModel);

	/**
	 * 查询批量结果信息接口
	 *@return
	 */
	  PaymentInfoDetailDTO queryBatchResultCode(PayTradeSearchDTO payTradeSearchDTO);
	  
	  List<PaymentInfoDetailDTO> queryAllPayTransInfoForBatchNo(String ReqBatchNo);
}
